package com.ssy.lingxi.platform.manage.util;

import java.util.Collection;
import java.util.List;

/**
 * 敏感词工具
 * @author yzc
 * @version 2.0.0
 * @date 2020/11/19
 */
public class SensitiveUtil {

    private static TrieTree sensitiveTree = new TrieTree();

    /**
     * TODO 异步初始化
     * 初始化敏感词树
     * @param sensitiveWords 敏感词列表
     */
    public static void init(Collection<String> sensitiveWords) {
        sensitiveTree.init(sensitiveWords);
    }

    /**
     * 在文本中查找第一个关键字
     *
     * @param text 文本
     * @return
     */
    public static String findFirst(String text) {
        return sensitiveTree.findFirst(text);
    }

    /**
     * 在文本中查找所有的关键字
     *
     * @param text 文本
     * @return
     */
    public static List<String> findAll(String text) {
        return sensitiveTree.findAll(text);
    }

    /**
     * 判断文本是否包含关键字
     *
     * @param text 文本
     * @return
     */
    public static boolean containsAny(String text) {
        return sensitiveTree.containsAny(text);
    }

    /**
     * 在文本中替换所有的关键字, 替换符默认为 *
     *
     * @param text 文本
     * @return
     */
    public static String replace(String text) {
        return sensitiveTree.replace(text, '*');
    }

    /**
     * 在文本中替换所有的关键字
     *
     * @param text        文本
     * @param replaceChar 替换符
     * @return
     */
    public static String replace(String text, char replaceChar) {
        return sensitiveTree.replace(text, replaceChar);
    }

}
